package leetcode_day._2021._202110;

/**
 * @author yzh
 * @version 1.0
 * @date 2021/10/2 20:23
 * 数字转换为十六进制数
 * 给定一个整数，编写一个算法将这个数转换为十六进制数。对于负整数，我们通常使用 补码运算 方法。
 * 算法：位运算
 * 对于负数，要加上 2 的 32 次方
 * ----------------------------
 * 看成二进制转十六进制
 */
public class _01_405 {

    public String toHex(int num) {
        if (num == 0) return "0";
        StringBuilder ans = new StringBuilder();
        while (num != 0) {
            int tmp = num & 15;
            char c = (char)(tmp + '0');
            if (tmp >= 10) c = (char) (tmp - 10 + 'a');
            ans.append(c);
            num >>>= 4;
        }
        return ans.reverse().toString();
    }

}
